package com.ym.medical.service;


import com.github.pagehelper.PageInfo;
import com.ym.medical.domain.entity.BankcardEntity;
import com.ym.medical.domain.entity.LabelsEntity;
import com.ym.medical.domain.entity.RelevantCertRecordEntity;
import com.ym.medical.domain.entity.UserEntity;
import com.ym.medical.domain.param.ExamDoctorParam;
import com.ym.medical.domain.vo.ClinicDoctorVO;
import com.ym.medical.domain.vo.DoctorDetailAllInfoVo;
import com.ym.medical.domain.vo.DoctorServiceItemsVo;
import com.ym.medical.domain.vo.HotConsultationVo;
import com.ym.medical.domain.vo.IndexDoctorsVO;
import com.ym.medical.domain.vo.ResultDocDetailVo;
import com.ym.medical.domain.vo.ResultDoctor;

import java.util.List;

/**
 * @author dai
 * @create 2019-05-06 8:09
 **/
public interface IResultDoctorSV {

	/**
	 * 按条件搜索医生
	 * @param pageNum
	 * @param pageSize
	 * @param examDoctor
	 * @return
	 */
	PageInfo<ResultDoctor> listPage(int pageNum, int pageSize, ExamDoctorParam examDoctor);

	/**
	 * 查询医生个人信息
	 * @param examDoctor
	 * @return
	 */
	ResultDocDetailVo selectByDoctorId(ExamDoctorParam examDoctor);

	/**
	 * 患者首页搜索医生
	 * @param examDoctor
	 * @param pageSize
	 * @param pageNum
	 * @return
	 */
	IndexDoctorsVO searchDoctor(ExamDoctorParam examDoctor, int pageSize, int pageNum);

	/**
	 * 医生擅长信息/标签 展示
	 * @param doctorId
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	PageInfo<LabelsEntity> selectDoctorGood(Long doctorId, int pageNum, int pageSize);

	/**
	 * 医生擅长信息增加
	 * @param labels
	 * @param doctorId
	 * @return
	 */
	boolean editDoctorGood(List<LabelsEntity> labels, Long doctorId);

	/**
	 * 医生擅长信息删除
	 * @param labId
	 * @param doctId
	 * @return
	 */
	boolean delDoctorGood(Long labId,Long doctId);


	/**
	 * 收藏-医生列表
	 * @param pageNum
	 * @param pageSize
	 * @param userId
	 * @return
	 */
	PageInfo<ResultDoctor> collectDoctorList(int pageNum, int pageSize, Long userId);

	/**
	 * 图文咨询-查询定价规则
	 * @param userId
	 * @return
	 */
	ResultDocDetailVo selectPriceRule(Long userId);

	/**
	 * 医生个人信息-医生服务项
	 * @param doctorId
	 * @return
	 */
	DoctorServiceItemsVo selectserviceItem(Long doctorId);

	DoctorDetailAllInfoVo selectDoctorDetail(Long userId);

	/**
	 * 患者端-医生个人信息
	 * @param examDoctor
	 * @return
	 */
	ResultDocDetailVo findDoctorById(ExamDoctorParam examDoctor,Long userId);

	/**
	 * 患者端-医生个人信息-热度咨询
	 * @param doctorId
	 * @param possDisease
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	HotConsultationVo hotConsultation(Long userId, Long doctorId, String possDisease, int pageNum, int pageSize);

	/**
	 * 患者端-医生个人信息-查询医生总结标签
	 * @param doctorId
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	HotConsultationVo conclusionLabel(Long doctorId, int pageNum, int pageSize);


	/**
	 * 医生端-银行卡列表
	 * @param currentId
	 * @return
	 */
	List<BankcardEntity> listBankCard(Long currentId);

	/**
	 * 根据条件查询查询医生基本信息
	 * @param examDoctor
	 * @return
	 */
	List<ResultDoctor> selectByExamDoctor(ExamDoctorParam examDoctor);

	/**
	 * 资质认证
	 * @param relevantCertRecords
	 * @param user
	 */
    void authentication(List<RelevantCertRecordEntity> relevantCertRecords, UserEntity user);

	/**
	 * 义诊医生列表
	 * @param pageNum
	 * @param pageSize
	 * @param examDoctor
	 * @return
	 */
	ClinicDoctorVO listFreeClinicDoctor(int pageNum, int pageSize, ExamDoctorParam examDoctor);
}
